#ifndef OPERATORSGEOCLINCHINGMANAGER_H
#define OPERATORSGEOCLINCHINGMANAGER_H

#include "OperManagerBase.h"

namespace ModelOper
{
//    /**
//     * @brief 无铆连接几何操作器
//     * @author liuyun
//     * @date 2024-12-14
//     */
//    class OperatorsGeoClinchingManager :public OperManagerBase
//    {
//        Q_OBJECT;
//    public:
//        /**
//         * @brief Construct a new Operators Geo Clinching Manager object
//         * @author liuyun
//         * @date 2024-12-14
//         */
//        OperatorsGeoClinchingManager(){};
//        /**
//         * @brief Destroy the Operators Geo Clinching Manager object
//         * @author liuyun
//         * @date 2024-12-14
//         */
//        ~OperatorsGeoClinchingManager(){};
//        /**
//         * @brief 执行
//         * @return true 成功
//         * @return false 失败
//         * @author liuyun
//         * @date 2024-12-14
//         */
//        virtual bool execGUI();
//        /**
//         * @brief 执行结果处理
//         * @return true 成功
//         * @return false 失败
//         * @author liuyun
//         * @date 2024-12-14
//         */
//        virtual bool execProfession();
//        /**
//         * @brief 其他事件执行
//         * @param[i]  index          事件索引（自定义）
//         * @param[i]  value          其他数据
//         * @author liuyun
//         * @date 2024-08-01
//         */
//        void eventProcess(int index, QVariant value = QVariant()) override;
//    private slots:
//        ;
//        /**
//         * @brief 基点选择槽函数
//         * @author liuyun
//         * @date 2024-12-14
//         */
//        void slotReselectBasePoint();
//        /**
//         * @brief 面组选择槽函数
//         * @author liuyun
//         * @date 2024-12-14
//         */
//        void slotSelectFaceGroup();
//    };

//    // 按钮注册相关操作
//    Register2FITKOperatorRepo(actionGeoCubeCreate, OperatorsGeoClinchingManager);
//    Register2FITKOperatorRepo(actionGeoCubeEdit, OperatorsGeoClinchingManager);
//    Register2FITKOperatorRepo(actionGeoCubeDelete, OperatorsGeoClinchingManager);
//    Register2FITKOperatorRepo(actionGeoCubeRename, OperatorsGeoClinchingManager);



    /**
     * @brief 无铆连接几何操作器--上模
     * @author liuyun
     * @date 2024-12-14
     */
    class OperatorsGeoClinchingPunchManager :public OperManagerBase
    {
        Q_OBJECT;
    public:
        OperatorsGeoClinchingPunchManager(){};
        ~OperatorsGeoClinchingPunchManager(){};

        virtual bool execGUI();
        virtual bool execProfession();
        void eventProcess(int index, QVariant value = QVariant()) override;
    private slots:
        ;

        void slotReselectBasePoint();
        void slotSelectFaceGroup();
    };

    // 按钮注册相关操作
    Register2FITKOperatorRepo(actionGeoPunchCreate, OperatorsGeoClinchingPunchManager);
    Register2FITKOperatorRepo(actionGeoPunchEdit, OperatorsGeoClinchingPunchManager);
    Register2FITKOperatorRepo(actionGeoPunchDelete, OperatorsGeoClinchingPunchManager);
    Register2FITKOperatorRepo(actionGeoPunchRename, OperatorsGeoClinchingPunchManager);


    /**
     * @brief 无铆连接几何操作器--压边圈
     * @author liuyun
     * @date 2024-12-14
     */
    class OperatorsGeoClinchingBHManager :public OperManagerBase
    {
        Q_OBJECT;
    public:
        OperatorsGeoClinchingBHManager(){};
        ~OperatorsGeoClinchingBHManager(){};

        virtual bool execGUI();
        virtual bool execProfession();
        void eventProcess(int index, QVariant value = QVariant()) override;
    private slots:
        ;

        void slotReselectBasePoint();
        void slotSelectFaceGroup();
    };

    // 按钮注册相关操作
    Register2FITKOperatorRepo(actionGeoBHCreate, OperatorsGeoClinchingBHManager);
    Register2FITKOperatorRepo(actionGeoBHEdit, OperatorsGeoClinchingBHManager);
    Register2FITKOperatorRepo(actionGeoBHDelete, OperatorsGeoClinchingBHManager);
    Register2FITKOperatorRepo(actionGeoBHRename, OperatorsGeoClinchingBHManager);


    /**
     * @brief 无铆连接几何操作器--下模
     * @author liuyun
     * @date 2024-12-14
     */
    class OperatorsGeoClinchingDieManager :public OperManagerBase
    {
        Q_OBJECT;
    public:
        OperatorsGeoClinchingDieManager(){};
        ~OperatorsGeoClinchingDieManager(){};

        virtual bool execGUI();
        virtual bool execProfession();
        void eventProcess(int index, QVariant value = QVariant()) override;
    private slots:
        ;

        void slotReselectBasePoint();
        void slotSelectFaceGroup();
    };

    // 按钮注册相关操作
    Register2FITKOperatorRepo(actionGeoDieCreate, OperatorsGeoClinchingDieManager);
    Register2FITKOperatorRepo(actionGeoDieEdit, OperatorsGeoClinchingDieManager);
    Register2FITKOperatorRepo(actionGeoDieDelete, OperatorsGeoClinchingDieManager);
    Register2FITKOperatorRepo(actionGeoDieRename, OperatorsGeoClinchingDieManager);


    /**
     * @brief 无铆连接几何操作器--上板料
     * @author liuyun
     * @date 2024-12-14
     */
    class OperatorsGeoClinchingTopSheetManager :public OperManagerBase
    {
        Q_OBJECT;
    public:
        OperatorsGeoClinchingTopSheetManager(){};
        ~OperatorsGeoClinchingTopSheetManager(){};

        virtual bool execGUI();
        virtual bool execProfession();
        void eventProcess(int index, QVariant value = QVariant()) override;
    private slots:
        ;

        void slotReselectBasePoint();
        void slotSelectFaceGroup();
    };

    // 按钮注册相关操作
    Register2FITKOperatorRepo(actionGeoTopSheetCreate, OperatorsGeoClinchingTopSheetManager);
    Register2FITKOperatorRepo(actionGeoTopSheetEdit, OperatorsGeoClinchingTopSheetManager);
    Register2FITKOperatorRepo(actionGeoTopSheetDelete, OperatorsGeoClinchingTopSheetManager);
    Register2FITKOperatorRepo(actionGeoTopSheetRename, OperatorsGeoClinchingTopSheetManager);


    /**
     * @brief 无铆连接几何操作器--下板料
     * @author liuyun
     * @date 2024-12-14
     */
    class OperatorsGeoClinchingBottomSheetManager :public OperManagerBase
    {
        Q_OBJECT;
    public:
        OperatorsGeoClinchingBottomSheetManager(){};
        ~OperatorsGeoClinchingBottomSheetManager(){};

        virtual bool execGUI();
        virtual bool execProfession();
        void eventProcess(int index, QVariant value = QVariant()) override;
    private slots:
        ;

        void slotReselectBasePoint();
        void slotSelectFaceGroup();
    };

    // 按钮注册相关操作
    Register2FITKOperatorRepo(actionGeoBottomSheetCreate, OperatorsGeoClinchingBottomSheetManager);
    Register2FITKOperatorRepo(actionGeoBottomSheetEdit, OperatorsGeoClinchingBottomSheetManager);
    Register2FITKOperatorRepo(actionGeoBottomSheetDelete, OperatorsGeoClinchingBottomSheetManager);
    Register2FITKOperatorRepo(actionGeoBottomSheetRename, OperatorsGeoClinchingBottomSheetManager);
}

#endif // OPERATORSGEOCLINCHINGMANAGER_H
